package member.model.service;
 
import java.sql.SQLException;
import java.util.ArrayList;
 
import member.exception.DuplicatedIdException;
import member.exception.DuplicatedRegisterNumberException;
import member.model.dao.MemberDAO;
import member.vo.MemberVO;

//회원 관리 비지니스 로직을 처리하는 Business Service 클래스
public class MemberManageService {
	
	private MemberDAO dao;
	
	public MemberManageService(MemberDAO dao){
		this.dao = dao;
	}
 
	//ID로 회원 목록조회
	 public MemberVO getMemberById(String id) throws SQLException{
			 return dao.selectMemberById(id);
	 }
	
	//가입 처리 메소드
	public void registerMember(MemberVO memberVO)throws SQLException, DuplicatedIdException, DuplicatedRegisterNumberException{
  
		//1. 등록된 ID가 있는 지 체크 
		//   - 이미 등록된 ID라면 DuplicatedIdException를 발생시킨다.
	    if(dao.selectMemberById(memberVO.getId())!=null){
	    	throw new DuplicatedIdException(memberVO.getId()+"는 이미등록된 아이디 입니다.");
	    }
	    //2. 등록된 주민번호가 있는 지 체크
	    //   - 이미 등록된 주민번호라면 DuplicatedRegisterNumberException 발생시킨다.
	    if(dao.selectMemberByRegisterNumber(memberVO.getRegisterNumber1(), memberVO.getRegisterNumber2())!=null){
		   throw new DuplicatedRegisterNumberException("는 이미 가입된 주민번호 입니다.");
	    }
  
	    //3. 디비에 회원정보 등록 처리
	    dao.insertMember(memberVO);
 
	}
	
	
	//전체 회원목록 조회
	 public ArrayList<MemberVO> getMemberList() throws SQLException{
		 return dao.selectAllMember();
	 }
	 
	/* //마일리지 범위로 조회
	 public ArrayList<MemberVO> selectMemberByMileageRange(int startMileage, int endMileage)throws SQLException {
		 return dao.selectMemberByMileageRange(startMileage, endMileage);
	 }*/
	 
	 
	 
	 //회원정보 수정
	 //update메소드
	 public void modifyMember(MemberVO memberVO) throws SQLException{
		 int cnt = dao.updateMember(memberVO);
		 System.out.println(cnt+"개의 행이 업데이트 되었습니다.");
	 }
	 
	 public void removeMemberById(String id)throws SQLException {
		 int cnt = dao.deleteMemberById(id);
		 System.out.println(cnt+"개의 행이 삭제되었습니다.");
	 }
	 
	 public ArrayList<MemberVO> getSearchByMemberName(String name) throws SQLException{
		 return dao.searchByMemberName(name);
	 }
}
